package HLA1.entity;

public class Job {
	
	private double t_in; //variabile che memorizza il tempo di ingresso nel sistema
	private double t_in_coda_disco;//variabile che memorizza il tempo di ingresso in coda disco
	private double t_coda_disco; //variabile che memorizza il tempo di stazionamento in coda
	private double t_in_disco; //variabile che memorizza il tempo di ingresso in disco
	private double t_out; //variabile che memorizza il tempo di uscita dal sistema
	private double t_risposta; //variabile che memorizza il tempo di risposta: out-in
	
	//variabile che memorizza il tempo attuale durante i passaggi nei centri
	private double t_attuale; 
	private static int num_job = 0;
    private int id_job;


	//costruttore dell'Evento. Prende in input il tempo di ingresso nel sistema
	public Job(double t_in_input){
		this.t_in = this.t_attuale = t_in_input;
		this.t_coda_disco = this.t_out = 0.0;
		this.t_in_disco = this.t_risposta = 0.0;
        this.id_job = num_job;
        num_job++;
	}
	
	//restituisce il tempo di ingresso
	public double getTin(){
		return this.t_in;
	}
	
	//calcola il tempo di risposta come t_out - t_in
	public void setTempoRisposta(double ultimo_tempo){
		this.t_out = ultimo_tempo;
		this.t_risposta = (this.t_out - this.t_in);
	}
	
	//restituisce il tempo di risposta
	public double getTempoRisposta(){
		return this.t_risposta;
	}
	
	//imposta il tempo attuale
	public void setTempoAttuale(double tempo_attuale){
		this.t_attuale = tempo_attuale;
	}
	
	//restituisce il tempo attale
	public double getTempoAttuale(){
		return this.t_attuale;
	}
	
	//imposta il tempo di ingresso in coda
	public void setIngressoInCodaDisco(double tempo_ingresso){
		this.t_in_coda_disco = tempo_ingresso;
		this.t_attuale = tempo_ingresso;
	}
	
	//imposta il tempo di ingresso disco e calcola il tempo di stazionamento in coda
	public void setIngressoInDisco(double tempo_ingresso){
		this.t_in_disco = tempo_ingresso;
		this.t_attuale = tempo_ingresso;
		this.t_coda_disco = (this.t_in_disco - this.t_in_coda_disco);
	}
	
	//restituisce il tempo di attesa in coda al disco
	public double getTempoCodaDisco(){
		return this.t_coda_disco;
	}
	
	//restituisce il tempo di ingresso in coda al disco
	public double getIngressoCoda(){
		return this.t_in_coda_disco;
	}
	
	//restituisce il tempo di ingresso al centro disco 1
	public double getIngressoDisco(){
		return this.t_in_disco;
	}

    public int getIdJob()
    {
        return this.id_job;
    }

	public void setIdJob(int id)
    {
        this.id_job = id;
    }
}
